/**
 * 替代关系信息发布类
 * 
 * @author 魏文杰 
 * @Version 1.0
 * @Date 2013-10-08
 */

package ext.generic.erp.service;

import java.util.List;

import wt.part.WTPart;
import wt.part.WTPartMaster;
import wt.part.WTPartUsageLink;
import ext.generic.erp.attributes.AlternativeMaterialUtil;
import ext.generic.erp.bean.AlternativeMaterial;
import ext.generic.erp.task.AlternativeMaterialDeleteByChild;
import ext.generic.erp.task.AlternativeMaterialIETask;

public class ReplacementReleaseService {
	/**
	 * 发布特定替代关系
	 * 
	 * @param usageLink
	 */
	public static void releaseSubstitute( WTPartUsageLink usageLink){
		releaseSubstitute( usageLink , "" );
	}
	
	/**
	 * 发布特定替代关系
	 * 
	 * @param usageLink
	 */
	public static void releaseSubstitute( WTPartUsageLink usageLink , String releaseTime){
		
		//先删除之前已经发布的同视图版本的usageLink中的所有特定替代，保证中间数据库中不会出现无效的数据。
		AlternativeMaterialDeleteByChild.delete( usageLink ) ;
		
		List<AlternativeMaterial> list = AlternativeMaterialUtil.getSubstituteLink(usageLink) ;
		
		int size = list.size() ;
		
//		System.out.println("获取特定替代关系数量为：" + size ) ;
		
		for(int i=0 ; i < size ; i++ ){
			AlternativeMaterial aMaterial = list.get(i) ;
			
			AlternativeMaterialIETask.add( aMaterial , releaseTime ) ;
		}
	}
	
	/**
	 * 发布全局替代关系
	 * 
	 * @param part
	 */
	public static void releaseAlternate( WTPart part){
		releaseAlternate( part , "" ) ;
		
	}
	
	/**
	 * 发布全局替代关系
	 * 
	 * @param part
	 */
	public static void releaseAlternate( WTPart part , String releaseTime ){
		WTPartMaster partMaster = (WTPartMaster) part.getMaster() ;
		releaseAlternate( partMaster , releaseTime ) ;
		
	}
	
	/**
	 * 发布全局替代关系
	 * 
	 * @param partMaster
	 */
	public static void releaseAlternate( WTPartMaster partMaster ){
		releaseAlternate( partMaster , "" ) ;
	}
	
	/**
	 * 发布全局替代关系
	 * 
	 * @param partMaster
	 */
	public static void releaseAlternate( WTPartMaster partMaster  , String releaseTime ){
		//先删除之前已经发布的同视图版本的usageLink中的所有全局替代，保证中间数据库中不会出现无效的数据。
		AlternativeMaterialDeleteByChild.delete( partMaster ) ;
		
		List<AlternativeMaterial> list = AlternativeMaterialUtil.getAlternateLink(partMaster) ;
		
		int size = list.size() ;
		
//		System.out.println("获取全局替代关系数量为：" + size ) ;
		
		for(int i=0 ; i < size ; i++ ){
			AlternativeMaterial aMaterial = list.get(i) ;
			
			AlternativeMaterialIETask.add( aMaterial , releaseTime ) ;
		}
	}
}
